#ifndef ICPEVENDORMANAGER_H
#define ICPEVENDORMANAGER_H

#include "cpedefine.h"
#include <QObject>
#include <QString>

class ICpeVendorManager
{
public:
    virtual ~ICpeVendorManager() = default;

    /**
     * @brief recognize 识别设备，判断厂家一致性
     */
    virtual void recognize() = 0;

    /**
     * @brief logout 退出登录
     */
    virtual void logout() = 0;

    virtual void reboot() = 0;

    virtual void refreshOnce() = 0;

    virtual void stopCycle() = 0;

    virtual void setRat(const QString &strRat) = 0;

    virtual void setBandLock(const std::vector<int> &vecCGW, const std::vector<int> &vecLTE, const std::vector<int> &vecNR, int iType) = 0;

    virtual void unlockBandLock(CpeEmUnlockBandType eType) = 0;

    /**
     * @brief setLTECellLock    执行LTE锁小区 or 锁频点
     * @param strEARFCN         EARFCN  必填
     * @param strPCI            PCI     选填
     */
    virtual void setLTECellLock(const QString &strEARFCN, const QString &strPCI = "") = 0;

    virtual void unlockLTECellLock() = 0;
    /**
     * @brief setNRCellLock     执行NR锁小区 or 锁频点
     * @param strEARFCN         EARFCN  必填
     * @param strPCI            PCI     选填
     * @param strBand           Band    选填
     * @param strSCS            SCS     选填
     */
    virtual void setNRCellLock(const QString &strEARFCN, const QString &strPCI = "", const QString &strBand = "", const QString &strSCS = "") = 0;

    virtual void unlockNRCellLock() = 0;

    virtual void setVendor(const QString &strVendor) = 0;

    virtual void get(const QString &strPlugin, int iInfoID, const QString &strUrl) = 0;

    virtual void post(const QString &strPlugin, int iInfoID, const QString &strUrl, const QString &strPost) = 0;
};

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(ICpeVendorManager, "com.kk.cpemanager.icpevendormanager")
QT_END_NAMESPACE

#endif
